package com.love.cloud.admin.config.job;

import com.love.cloud.admin.service.AuthService;
import com.love.cloud.admin.service.DingTalkService;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * xxl-job定时任务配置
 * @author hongdongqu
 */
@Component
@Slf4j
public class XxlJobHandler {
    @Resource
    private DingTalkService dingTalkService;
    @Resource
    private AuthService authService;

    /**
     * xxl-job调度的方法，根据@XxlJob(value = "demoJobHandler")来定位，value值的定义不可重复
     * 钉钉用户同步执行器
     * @throws Exception
     */
    @XxlJob(value = "UserSyncJobHandler")
    public void UserSyncJobHandler() throws Exception {
        // 2.3.0版本获取参数的方式
        // 注意xxl-job统一只接受一个String类型的参数，如果有多个参数，请自定义规则，获取到参数后自行切割
        String param = XxlJobHelper.getJobParam();
        // 打印到日志文件的方式，打印之后的文件，在调度中心的调度日志管理中，操作选项下的执行日志可查看到
        XxlJobHelper.log("执行用户同步");
        //同步用户数据
        dingTalkService.syncAllData();
        //清空用户详情和accessToken
        authService.clearAllUserTokenAndDetail();
        // 执行结束后返回的方式，同样在执行日志可查看
        XxlJobHelper.handleSuccess("执行成功");
    }
}
